/**
 * 简化版数据迁移脚本
 * 直接编译并运行，避免 npx 问题
 */

const { exec } = require('child_process');
const path = require('path');
const fs = require('fs');

console.log('🚀 简化版数据迁移启动...');
console.log('');

// 检查 dist 目录和编译后的文件
const distDir = path.join(__dirname, 'dist');
const compiledScript = path.join(distDir, 'scripts', 'migrate-to-mongodb.js');

function runMigration() {
  console.log('▶️ 执行数据迁移...');
  
  exec(`node "${compiledScript}"`, { cwd: __dirname }, (error, stdout, stderr) => {
    if (error) {
      console.error('❌ 迁移执行失败:', error);
      return;
    }
    
    if (stderr) {
      console.error('⚠️ 警告信息:', stderr);
    }
    
    console.log(stdout);
    console.log('🎉 数据迁移完成！');
  });
}

function compileAndRun() {
  console.log('🔧 正在编译 TypeScript...');
  
  exec('npx tsc', { cwd: __dirname }, (error, stdout, stderr) => {
    if (error) {
      console.error('❌ TypeScript 编译失败:', error);
      console.log('');
      console.log('🛠️ 请尝试以下解决方案:');
      console.log('1. 确保安装了 typescript:');
      console.log('   npm install -g typescript');
      console.log('   npm install --save-dev typescript');
      console.log('');
      console.log('2. 或者手动编译:');
      console.log('   npx tsc -p tsconfig.json');
      console.log('   node dist/scripts/migrate-to-mongodb.js');
      return;
    }
    
    if (stderr) {
      console.log('编译警告:', stderr);
    }
    
    console.log('✅ TypeScript 编译成功！');
    console.log('');
    
    runMigration();
  });
}

// 检查编译后的文件是否存在
if (fs.existsSync(compiledScript)) {
  console.log('✅ 发现已编译的迁移脚本');
  runMigration();
} else {
  console.log('📦 未发现编译文件，开始编译...');
  compileAndRun();
}